package com.essg.sdc.screen;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import com.essg.sdc.base.BaseAlgo;

/**
 * <H1>新人社員向けアルゴリズム(Java)</H1>
 *<H2>クラスローダー</H2><br>
 *<ol>
 *	<li>当Jarが実行された場合は、クラスローダーを起動する。
 *	<li>作成したアルゴリズムプログラムをロードする
 *	<li>ロードするクラス名をフル・パスで入力する。
 *	<li>終了する場合は、「e」を入力する。
 *</ol>
 *
 * @author ess0034
 */
public class EssStudyMain {

	public EssStudyMain(){

	}

	/**
	 * クラスローダーメイン
	 */
	public void startMain(){

		String line = "";
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in),80);

		while(true){

			try{
				System.out.println("+------------------------------------------------------+");
				System.out.println("| ===> LoadするClass(Full Package)を入力               |");
				System.out.println("| ===> E:終了                                          |");
				System.out.println("+------------------------------------------------------+");
				System.out.print(" ===> ");
				line = reader.readLine();
				if(line.equalsIgnoreCase("e")){
					System.out.println("クラスローダーは終了しました。");
					break;
				}

				Class<?> _obj = Class.forName(line);
				BaseAlgo _study = (BaseAlgo)_obj.newInstance();

				_study.ListAlgo();

	   		}catch(ClassNotFoundException ioe){
	   			System.out.println("  " + line +"が存在しません。クラス名を確認して下さい。");
	   		}catch(NoClassDefFoundError ioe){
	   			System.out.println("  " + line +"は小文字・大文字が異なります。クラス名を確認して下さい。");
	   		}catch(InstantiationException ioe){
	   			System.out.println("  " + line +"はインスタンス化できません。");
			}catch (Exception e) {
				e.printStackTrace();
				System.exit(-1);
			}
		}
		System.exit(0);

	}

	public static void main(String[] args) {

		EssStudyMain _main = new EssStudyMain();
		_main.startMain();

	}

}
